package lab.chapter;

/**
 * 状态迁移
 */
public abstract class Transition {
    // 对于重复的情况，最多重复次数。对于？可以重复1次，+、*代表多个，maxTimes = -1
    protected int maxTimes = 1;

    /**
     * 是否满足迁移条件
     * @param object 匹配对象
     * @return bool
     */
    public abstract boolean match(Object object);

    /**
     * 是否是 Epsilon 转换
     * @return bool
     */
    public abstract boolean isEpsilon();

    /**
     * 获取重复次数
     * @return maxTimes
     */
    public int getMaxTimes() {
        return maxTimes;
    }

}
